package cn.doitedu.rpc

/**
 * 偏函数：没有match，但是有case，用于模式匹配的一个特殊的方法
 */
object PartialFuncDemo {

  //使用普通的模式匹配方法
  def matchMethod1(num: Int): String = num match {
    case 1 => "One"
    case 2 => {
      "Two"
    }
    case _ => "Else"
  }

  //使用特殊的方法，代替上面的方法
  //PartialFunction第一个泛型代表输入的参数类型
  //PartialFunction第一个泛型代表方法返回值的类型
  //PartialFunction类型用来约束方法参数的类型和返回值类型
  def matchMethod2: PartialFunction[Int, String] = {
    case 1 => "One"
    case 2 => "Two"
    case _ => "Else"
  }


  def main(args: Array[String]): Unit = {

    //val r = matchMethod1(2)
    val r: String = matchMethod2(2)
    println(r)
  }

}
